package cn.tedu.exception;

import java.util.InputMismatchException;
import java.util.Scanner;

public class ExceptionDemo {
    public static void main(String[] args) {
       // method1();
//        method2();
        //method3();
        f();//为了写一个标准的写法
    }

    private static void f() {
        try{
            method3();
        }catch(Exception e){
            System.out.println("兄弟请重新输入吧");

        }
    }
    /*如果一个方法抛出了异常，那么谁调用这个方法，谁就需要处理这个异常，这里的处理有两种方案：
    *捕获解决或继续向上抛出
    *但是注意：我们一般会在main方法抛出之前，解决掉异常。而不是把问题抛给main方法，因为那样就没人解决了
    *详见本类f（）方法调用methdod3方法
     */
//6创建method 3（），异常解决方案


//    private static void method3() throws InputMismatchException,ArithmeticException{
    private static void method3() throws Exception{
        System.out.println("first number");
        int a= new Scanner(System.in).nextInt();
        System.out.println("second number");
        int b=new Scanner(System.in).nextInt();
        System.out.println(a/b);

    }


    /*异常捕获处理的格式--自己处理
    try{
        可能会抛出异常的代码
    }catch(异常类型 异常名字){
     匹配到了错误，进行处理的解决方案
    }
     */
    private static void method2() {
        //5.按照捕获处理的语法提供异常解决放啊你以
        /*4.try中放着的是可能会出现异常的代码
        *5.如果发生了异常，会被catch捕获，执行之前catch中的解决方案
         */
        try{
            System.out.println("first number");
            int a= new Scanner(System.in).nextInt();
            System.out.println("second number");
            int b=new Scanner(System.in).nextInt();
            System.out.println(a/b);

        }catch(Exception e){
            System.out.println("您不配输入");
        }
        /*6try-catch 可以嵌套，如果有多种异常类型需要特殊处理的话
        7.这就是多态最为经典的一种类型，我们并不关心子类具体的类型，而是将所有子类统一当做父类类型处理
        *提供通用的解决方案
         */

    }

    private static void method1() {
        //InputMismatchException--3/3.5输入不匹配异常
        //ArithmeticException: / by zero--17/0算数异常，除数不能为0
        /*1.不要害怕bug，真正的勇士敢于面对自己写的bug*/
        /*2.学会看报错的信息提示，确定自己的错误方向*/
        /*3.学会看报错的行号信息，确定自己报错的位置，哪里不对点哪里
        注意源码不会错，要看的是自己写的代码
         */

        //1.提示并接受用于输入的第一个数
        System.out.println("first number");
        int a= new Scanner(System.in).nextInt();
        System.out.println("second number");
        int b=new Scanner(System.in).nextInt();
        //3.直接打印这两个数除法的结果
        System.out.println(a/b);
    }


}
